package com.wenjiang.init;

import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wenjiang.common.constat.RedisKey;
import com.wenjiang.common.vo.GoodInfo;

import com.wenjiang.entity.GoodIndex;
import com.wenjiang.entity.MallGood;
import com.wenjiang.mapper.GoodIndexDao;
import com.wenjiang.mapper.MallGoodMapper;
import com.wenjiang.util.RedisUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 项目启动时把商品 把商品数据写入redis
 */
@Component
@Slf4j
public class RedisInitParamer implements ApplicationRunner {

    @Autowired
    MallGoodMapper mallGoodMapper;

    @Autowired
    GoodIndexDao goodIndexDao;

    @Autowired
    RedisUtils redisUtils;

    @Override
    public void run(ApplicationArguments args) throws Exception {

        //查询所有的商品信息 存入redis
        List<MallGood> mallGoods = mallGoodMapper.selectList(null);

        for (MallGood item:mallGoods){
            GoodInfo goodInfo= new GoodInfo();
            BeanUtil.copyProperties(item,goodInfo);
            //设置商品信息
            redisUtils.set(RedisKey.mallGoodKey+goodInfo.getGoodId().toString(),goodInfo);
            //设置商品对应的库存
            redisUtils.set(RedisKey.mallGoodCount+goodInfo.getGoodId().toString(),goodInfo.getGoodCount());
            //放入es中
            GoodIndex goodIndex =new GoodIndex();
            BeanUtil.copyProperties(item, goodIndex);
            goodIndexDao.save(goodIndex);

        }

//        //查询最新商品
//        QueryWrapper <MallGood>newGoodQuery = new QueryWrapper();
//        newGoodQuery.orderByDesc("good_create_time");
//        List<MallGood> newGoods = mallGoodMapper.selectList(newGoodQuery.last("limit 10"));


        // 查询秒杀的商品
        QueryWrapper <MallGood> SecKillGoodQuery= new QueryWrapper<>();
        SecKillGoodQuery.eq("good_status", 2);
        List<MallGood> secKillGoods= mallGoodMapper.selectList(SecKillGoodQuery);

//        //存入redis的数组当中
//        redisUtils.lSet(RedisKey.mallNewGoodKey, newGoods);
        // 直接存一个数组
//        redisUtils.lSet(RedisKey.mallSecKillGoodKey, secKillGoods);


//        //查询销量前10的商品
//        QueryWrapper queryWrapper= new QueryWrapper();
//        queryWrapper.orderByDesc("good_sell");
//        //获取前10条数据有sql注入的分析
//        queryWrapper.last("limit 10");
//        List<MallGood> hotGood = mallGoodMapper.selectList(queryWrapper);
//
//        //存入redis 热卖商品中
//        for(MallGood item :hotGood){
//            GoodInfo goodInfo = new GoodInfo();
//            BeanUtil.copyProperties(item,goodInfo);
//            //存入redis中
//            redisUtils.zSet(RedisKey.mallHotGoodKey,goodInfo,goodInfo.getGoodSell());
//        }

        log.info("商品信息初始化完成");



    }
}
